<?php

/**
 *
 * 用于include文件
 * @author jeff
 *
 */
class Importer
{
    private static $loaded_files = array(); //已经加载的文件


    /**
     *
     * 打印所有已经加载过的文件
     */
    public function getLoadedFiles()
    {
        $final_loaded_files = array();
        if (is_array(Importer::$loaded_files) && !empty(Importer::$loaded_files)) {
            $loaded_files = Importer::$loaded_files;
            foreach ($loaded_files as $file) {
                $final_loaded_files[] = $file;
            }
        }
        return $final_loaded_files;
    }

    /**
     *
     * 加载制定的文件
     * @param string $file_path
     * @param string $file_ext
     * @param string $root_path
     */
    public static function importFile($file_path, $file_ext = 'php', $root_path = INCLUDE_PATH)
    {
        $final_path = $root_path . '/' . preg_replace('|\.|', '/', $file_path) . '.' . $file_ext;
        if (is_file($final_path)) {
            if (is_readable($final_path)) {
                $file_hash = md5($final_path);
                if (!isset(Importer::$loaded_files[$file_hash])) {
                    include $final_path;
                    Importer::$loaded_files[$file_hash] = $final_path;
                }
            } else {
                trigger_error('file_is_not_readable', E_USER_ERROR);
            }
        } else {
            trigger_error('file_no_exists', E_USER_ERROR);
        }
    }

    /**
     *
     * Enter description here ...
     * @param string $file_path
     */
    public static function importFileByFullPath($file_path)
    {
        if (is_file($file_path)) {
            if (is_readable($file_path)) {
                $file_hash = md5($file_path);
                if (!isset(Importer::$loaded_files[$file_hash])) {
                    include $file_path;
                    Importer::$loaded_files[$file_hash] = $file_path;
                }
            } else {
                trigger_error('file_is_not_readable', E_USER_ERROR);
            }
        } else {
            trigger_error('file_no_exists', E_USER_ERROR);
        }
    }

    /**
     *
     * 加载配置文件
     * @param string $config_path config目录
     * @param string $config_file_ext config文件的后缀
     */
    public static function importConfigFile($config_path, $config_file_ext = 'inc.php')
    {
        if (empty($config_path)) {
            $config_path = ROOT_PATH . '/config';
        }
        $config_files = glob($config_path . '/' . '*.' . $config_file_ext);
        if (!empty($config_files) && is_array($config_files)) {
            foreach ($config_files as $config_file) {
                if (is_file($config_file)) {
                    if (is_readable($config_file)) {
                        $file_hash = md5($config_file);
                        if (!isset(Importer::$loaded_files[$file_hash])) {
                            include $config_file;
                            Importer::$loaded_files[$file_hash] = $config_file;
                        }
                    } else {
                        trigger_error('file_is_not_readable', E_USER_ERROR);
                    }

                } else {
                    trigger_error('file_no_exists', E_USER_ERROR);
                }
            }
        }
    }
}